Random numbers are difficult to generate in a digital environment that constitutes a computer platform. With the expansion of computer networking, the need for secure network transactions is on the rise. Secure network transactions often depend on encryption algorithms. These encryption algorithms require copious amounts of random bits as they operate to provide secure network transactions. Some encryption algorithms require truly random bits in order to provide high levels of security.
Truly random numbers are generally attainable through the use of a hardware-based random number generator embodied as a peripheral that can be accessed by a computer. A hardware-based random number generator typically relies on some natural phenomenon as a source of entropy. For example, one example of a hardware-based random number generator uses radioactive decay as a source of entropy. Yet another example of a hardware-based random number generator relies on thermal noise as a source of entropy. The term “entropy” refers to the state of disorder in a system and is considered to be one metric by which the randomness of a random number is measured.
Given that a random number is attainable in a computing environment, there are some other problems associated with the use of random numbers. For example, where a process needs random numbers in order to function properly, that process, which is also known as a consumer (or consuming) process, may require random numbers at a rate that is significantly greater than a random number generator can provide. In this scenario, the random number generator, which is also known as a producer, is simply not able to keep up with the quantity of random numbers demanded by the consumer.
One manner in which this problem has been overcome in the past was through the use of a buffer. Accordingly, a producer would populate a buffer with random numbers as quickly as possible. The hope was to have a sufficient quantity of random numbers available in the buffer by the time a consumer needed them. Unfortunately, this method only serves to smooth out the demand over time, but it simply does not solve the problem of “too little, too late”. Hence, in any situation where demand for random number truly exceeds supply, the buffer does not really help.
Many have attempted to resuscitate the buffer concept just described by allowing the buffer to continually provide “random numbers”, even if the same random number was previously supplied to the consuming process. This, of course, would provide a continuous flow of numbers to the consuming process even if the producer could not keep up with demand. The problem with this concept is a matter of quality. By providing a consuming process with a number that was already provided, the quality of randomness (i.e. the entropy) of the overall system is compromised.